package responsibility;

/**
 * 抽象者类
 */
public abstract class Handler {
    protected final static int NUM_ONE=1;
    protected final static int NUM_THREE=3;
    protected final static int NUM_SEVEN=7;
    //该领导处理的请假天数区间
    private int numStart;
    private int numEnd;
    //声明后继者（上级领导）
    private Handler nextHandler;

    public int getNumStart() {
        return numStart;
    }

    public void setNumStart(int numStart) {
        this.numStart = numStart;
    }

    public int getNumEnd() {
        return numEnd;
    }

    public void setNumEnd(int numEnd) {
        this.numEnd = numEnd;
    }

    public Handler getNextHandler() {
        return nextHandler;
    }

    public void setNextHandler(Handler nextHandler) {
        this.nextHandler = nextHandler;
    }

    public Handler(int numStart) {
        this.numStart = numStart;
    }

    public Handler(int numStart, int numEnd) {
        this.numStart = numStart;
        this.numEnd = numEnd;
    }

    //设置上级领导对象
    public Handler(Handler nextHandler) {
        this.nextHandler = nextHandler;
    }
    //各级领导处理请求条方法
    protected abstract void handleLeave(LeaveRequest leaveRequest);
    //提交请假条
    public final void submit(LeaveRequest leave){
        //该领导进行审批
        this.handleLeave(leave);
        if(this.nextHandler!=null&&leave.getNum()>this.numEnd){
            //提交给上级领导审批
            this.nextHandler.submit(leave);
        }else{

            System.out.println("流程结束");
        }
    }

}

